Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Перетворення типів даних

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

Частина тексту файла

Міністерство освіти та науки України Національний університет «Львівська політехніка»  ЗВІТ З лабораторної роботи №3 З дисципліни: «Програмування ч.3 Структури і алгоритми» "Перетворення типів даних" Львів 2009 1. МЕТА РОБОТИ Дослідження методів та засобів явного та неявного перетворення типів даних. 2. ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ Завдання 1: Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено. typedef unsigned int type_0; typedef unsigned short int type_1; typedef unsigned long int type_2; typedef signed short int type_3; typedef signed int type_4; typedef signed long int type_5; typedef bool type_6; typedef char type_7; typedef wchar_t type_8; typedef float type_9; typedef double type_10; typedef long double type_11; type_2 x0=0; type_1 x1=29; type_5 x2=2; type_5 x3=3; type_1 x4=4; type_5 x5=5; type_2 x6=6; type_1 x7=7; type_3 x8=8; type_5 x9=9; type_5 x10=10; type_2 x11=11; x1 = x1 - 0xFFFFFFFA; x3 = 'a' + x0 - x2; x7 = x4 + x5 + x6 * 0.1; Завдання 2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат. int x = 0x0529; //х_4 = 0xmndn float y = 5. 29e+2; // y_2= MN. DN e +2 int v0=*reinterpret_cast<char*> (&x) +3; printf("%d %x %c \n", v0,v0,v0); int v5=*reinterpret_cast<char*> (&x) +2; printf("%d %x %c \n", v5,v5,v5); long w1 =*reinterpret_cast<long*>(&y)+33; printf("%lx %lu %ld \n",w1,w1,w1); long w6 =(*reinterpret_cast<short*>(&y)+3)+13; printf("%x %u %d \n",w6,w6,w6); 3. ПЕРЕТВОРЕННЯ Завдання 1: x1 = x1 - 0xFFFFFFFA; x1 приводиться в int (доповнення нулем), 0xFFFFFFFA – const int, результат приводиться з int в unsigned short int збереженням двох молодших байтів, старший біт втрачає статус знакового. x3 = 'a' + x0 - x2; ‘a’ – const char (значення 97 за таблицею ASCII) приводиться в long, x0 - unsigned long int приводиться в long старший біт стане знаковим, x2 - signed long int x3 - signed long int, типи однакові, приведення не буде. x7 = x4 + x5 + x6 * 0.1; х6 - unsigned long int, приводиться в float. 0.1 – const float, х4 - unsigned short int, приводиться в long (доповнення нулем), а потім в float, x5 - signed long int, приводиться в float. x7 - unsigned short int, резудбтат арифметичних операцій приводиться з float в long і з long в unsigned short int збереженням двох молодших байтів x8 = x9 + x10 - x11*10; x11 - unsigned long int, 10 const int приводиться в long int (доповнення нулем), старший біт втрачає статус знакового, x10 - signed long int, x9 - signed long int, x8 - signed short int, результат арифметичних операцій приводиться з signed long int в signed short int збереженням двох молодших байтів Завдання 2 int x = 0x0529; в пам’яті знаходиться значеення 29 05 00 00 int v0=*reinterpret_cast<char*> (&x) +3; *reinterpret_cast<char*> (&x) приводить значення за адресою &x з int в char і збіьлшує його на 3, тобто вибирається молодший байт 29 і збільшується на 3, отримаємо 2С, потім це значиться неявним перетворенням приводиться до типу int. int v5=*reinterpret_cast<char*> (&x) +2; Перетворення аналогічні з попереднім, тільки значення молодшого байту збільшується на 2, а не на 3 і в результаті отримаємо 2B float y = 5. 29e+2; в пам’яті знаходиться значеення 00 40 04 44 long w1 =*reinterpret_cast<long*>(&y)+33; *reinterpret_cast<long*>(&y) ) приводить значення за адресою &y з float в long і збільшу значення молодшого байта на 3310=2116, тобто в пам’яті знаходиться з...
Антиботан аватар за замовчуванням

24.03.2013 13:03

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини